import axios from 'axios'
// 引入Message
import { Message } from 'element-ui'
import router from '../router'

// 请求拦截器
axios.interceptors.request.use(
    // 如果存在token，请求携带这个token
    config=>{
        if (window.sessionStorage.getItem('tokenStr')){
            config.headers['Authorization'] = window.sessionStorage.getItem('tokenStr')
        }
        return config;
    },
    error=>{
        console.log(error);
    }
)

// 响应拦截器
axios.interceptors.response.use(
    // 成功的调用到了后端接口
    success=>{
        //业务逻辑错误，根据业务逻辑返回code判断
        if(success.status && success.status == 200){
            // 失败的
            if(success.data.code == 500 || success.data.code ==401 || success.data.code ==403){
                Message.error({message:success.data.message});
                // router.replace('/')
                return;
            }
            // 成功的
            if(success.data.message){
                Message.success({message:success.data.message});
            }
             // 返回json对象
            return success.data;
        }
    },
    // 没有调到后端接口
    error=>{
        if (error.response.code == 504 || error.response.code == 404){
            Message.error({message:'服务器被吃了，hhha'})
        }else if(error.response.code == 403){
            Message.error({message:'权限不足，请联系管理员'})
        }else if (error.response.code == 401){
            Message.error({message:'尚未登录，请登录'});
            router.replace('/');
        }else{
            if(error.response.data.message){
                Message.error({message:error.response.data.message})
            } else {
                Message.error({message:'未知错误！'})
            }
        }
        return;
    }
);

// 请求封装
let base = '';
// 传送json格式的get请求
export const getRequest = (url,params)=>{
    return axios({
        method:'get',
        url:`${base}${url}`,
        data:params
    })
}
// 传送json格式的post请求
export const postRequest = (url,params)=>{
    return axios({
        method:'post',
        url:`${base}${url}`,
        data:params
    })
}
// 传送json格式的put请求
export const putRequest = (url,params)=>{
    return axios({
        method:'put',
        url:`${base}${url}`,
        data:params
    })
}
// 传送json格式的delete请求
export const deleteRequest = (url,params)=>{
    return axios({
        method:'delete',
        url:`${base}${url}`,
        data:params
    })
}
